package com.bsj.power.job.service;

import com.bsj.power.common.config.global.JsonResult;
import com.bsj.power.common.def.dto.PageDTO;
import com.bsj.power.common.def.dto.alarmReport.AlarmReportSearchDTO;
import com.bsj.power.common.def.dto.job.*;
import com.bsj.power.common.def.entity.job.Job;
import com.bsj.power.common.def.entity.job.WorkPersonnel;
import com.bsj.power.common.def.entity.log.SysRecordLog;
import com.bsj.power.common.def.vo.JobRemindVO;
import com.bsj.power.common.def.vo.pls.AlarmReportVO;
import com.bsj.power.common.def.vo.web.job.JobPageVO;
import com.bsj.power.common.def.vo.web.job.JobVO;
import com.bsj.power.common.def.vo.web.job.media.BackTimeMediaVO;

import java.util.List;

/**
 * @author yinhao
 * @version 1.0
 * @description 工单信息
 * @date 2024/5/10
 */
public interface JobService {

    /**
     * 添加作业信息
     * @param dto
     * @return
     */
    Long addAndUpdateJob(JobDTO dto);

    /**
     * 修改作业信息
     * @param job
     * @return
     */
    int updateJobInfo(Job job);

    /**
     * 作业信息查询
     * @param jobSearch
     * @return
     */
    List<Job> selectJobList(JobSearch jobSearch);

    /**
     * 分页查询工单信息
     * @param dto
     * @return
     */
    JsonResult<List<JobVO>> jobPageList(JobSearchDTO dto);

    /**
     * 获取报警详细
     * @param dto
     * @return
     */
    JsonResult<List<AlarmReportVO>> jobAlarmReport(AlarmReportSearchDTO dto);

    /**
     * 作业板块数据统计第一栏
     * @param startTime 开始时间
     * @param endTime 结束时间
     * @return
     */
    JsonResult<JobPageVO> doJobDataPageOne(String startTime, String endTime);

    /**
     * 作业板块数据统计第二栏
     * @param classify
     * @return
     */
    JsonResult<JobPageVO> doJobDataPageTwo(Integer[] classify, String startTime, String endTime);


    /**
     * 工单日志分页
     *
     * @param sysRecordLogDTO
     * @return com.bsj.power.common.config.global.JsonResult<java.util.List<com.bsj.power.common.def.entity.log.SysRecordLog>>
     * @author ljx
     * @time 2024/6/24 14:52
     */
    JsonResult<List<SysRecordLog>> logPage2(SysRecordLogDTO sysRecordLogDTO);

    /**
     * 操作日志导出
     *
     * @param sysRecordLogDTO
     * @return
     */
    List<SysRecordLog> logPageExport(SysRecordLogDTO sysRecordLogDTO);


    /**
     * 时间追溯获取多媒体数据
     * @param jobId
     * @return
     */
    List<BackTimeMediaVO> backTime(Long jobId);

    /**
     * 质量计划同步
     *
     * @return com.bsj.power.common.config.global.JsonResult
     * @author ljx
     * @time 2024/7/11 10:20
     */
    JsonResult qualityPlanSync();

//    /**
//     * 同步工单信息
//     * @param startTime 开始时间
//     * @param endTime 结束时间
//     * @return
//     */
//    int syncSysJobList(String startTime, String endTime);

    /**
     * 作业工单添加作业人员信息
     * @param dto
     * @return
     */
    Integer addAndUpdateWorkPersonnel(WorkPersonnelDTO dto);

    /**
     * 分页获取作业人员信息
     * @param pageDTO
     * @param name
     * @param groupId
     * @return
     */
    JsonResult<List<WorkPersonnel>> queryWorkPersonnelPages(PageDTO pageDTO, String name,Integer groupId);

    /**
     * 模糊查询工单列表
     *
     * @param value
     * @return
     */
    List<Job> fuzzyQueryJobList(String value);

    /**
     * 根据工单获取异常提醒信息
     *
     * @param jobId
     * @return
     */
    JsonResult<JobRemindVO> JobRemindVO(Long jobId);

    /**
     * 删除人员与工单的绑定关系
     *
     * @param jobId
     * @param workPersonnelId
     * @return com.bsj.power.common.config.global.JsonResult
     * @author ljx
     * @time 2024/11/11 9:31
     */
    JsonResult deleteJobAssociation(Long jobId, Integer workPersonnelId);
}
